#pragma once
#include <xaudio2.h>
#include "UserTypes.h"
using namespace System;
using namespace Reign::Core;

namespace Reign
{namespace Audio
{namespace XAudio
{
	public ref class Audio : Disposable, AudioI
	{
		#pragma region Properties
		internal: IXAudio2* xAudio;
		private: IXAudio2MasteringVoice* masteringVoice;

		internal: delegate void UpdateCallbackFunc();
		internal: UpdateCallbackFunc^ UpdateCallback;
		#pragma endregion

		#pragma region Constructors
		public: Audio(DisposableI^ parent);
		public: ~Audio();
		private: void null();
		#pragma endregion

		#pragma region Methods
		public: virtual void Update();
		#pragma endregion
	};
}
}
}